//package aimis.config.db;
//
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.context.annotation.Bean;
//import org.springframework.context.annotation.Configuration;
//import org.springframework.context.annotation.Profile;
//import aimis.domain.Authority;
//import aimis.repo.AuthorityRepo;
//
//@Profile(value = {"test", "dev", "local", "prod"})
//@Configuration
//public class AuthorityInitConfig {
//    private Logger LOGGER = LoggerFactory.getLogger(AuthorityInitConfig.class);
//    @Autowired
//    private AuthorityRepo authorityRepo;
////    @Value("${admin.authority}")
////    private String adminAuthority;
//
//    @Bean
//    public void authorityInit() {
//        LOGGER.info("初始化权限开始...");
////        admin();
//        user();
//        property();
//        alarm();
//        vulnerability();
//        operationScript();
//        parameter();
//        performance();
//        workflow();
//        report();
//        workbench();
//        //TODO 初始化其他权限
//        overview();
//        LOGGER.info("初始化权限结束");
//    }
//
////    private void admin() {
////        try {
////            Authority byName = authorityRepo.findByName(adminAuthority);
////            if (byName != null) {
////                return;
////            }
////            Authority authority = new Authority();
////            authority.setSort(0);
////            authority.setName(adminAuthority);
////            authority = authorityRepo.save(authority);
////        } catch (Exception e) {
////            e.printStackTrace();
////        }
////    }
//    private void overview(){
//        newAuthority("运营门户");
//    }
//    private void user(){
//        newAuthority("用户权限管理");
//        newAuthority("用户权限管理/部门管理");
//        newAuthority("用户权限管理/部门管理/添加");
//        newAuthority("用户权限管理/部门管理/查询");
//        newAuthority("用户权限管理/部门管理/修改");
//        newAuthority("用户权限管理/部门管理/删除");
//        newAuthority("用户权限管理/部门管理/数据权限");
//        newAuthority("用户权限管理/权限管理");
//        newAuthority("用户权限管理/权限管理/添加");
//        newAuthority("用户权限管理/权限管理/查询");
//        newAuthority("用户权限管理/权限管理/修改");
//        newAuthority("用户权限管理/权限管理/删除");
//        newAuthority("用户权限管理/用户管理");
//        newAuthority("用户权限管理/用户管理/添加");
//        newAuthority("用户权限管理/用户管理/查询");
//        newAuthority("用户权限管理/用户管理/修改");
//        newAuthority("用户权限管理/用户管理/删除");
//        newAuthority("用户权限管理/用户管理/重置密码");
//        newAuthority("用户权限管理/角色管理");
//        newAuthority("用户权限管理/角色管理/添加");
//        newAuthority("用户权限管理/角色管理/查询");
//        newAuthority("用户权限管理/角色管理/修改");
//        newAuthority("用户权限管理/角色管理/删除");
//    }
//    private void workbench(){
//        newAuthority("工作台");
//        newAuthority("工作台/值班日历编辑");
//        newAuthority("工作台/值班日历查询");
//        newAuthority("工作台/全部部门值班日历查询");
//        newAuthority("工作台/全部部门值班日历编辑");
//    }
//    private void property() {
//        newAuthority("资产管理");
//        newAuthority("资产管理/资产综合查询");
//        newAuthority("资产管理/组织管理");
//        newAuthority("资产管理/组织管理/添加");
//        newAuthority("资产管理/组织管理/查询");
//        newAuthority("资产管理/组织管理/查看");
//        newAuthority("资产管理/组织管理/修改");
//        newAuthority("资产管理/组织管理/删除");
//        newAuthority("资产管理/业务资产");
//        newAuthority("资产管理/业务资产/添加");
//        newAuthority("资产管理/业务资产/查询");
//        newAuthority("资产管理/业务资产/修改");
//        newAuthority("资产管理/业务资产/删除");
//        newAuthority("资产管理/业务资产/导出");
//        newAuthority("资产管理/业务资产/批量导入");
//        newAuthority("资产管理/计算资源");
//        newAuthority("资产管理/计算资源/添加");
//        newAuthority("资产管理/计算资源/查询");
//        newAuthority("资产管理/计算资源/修改");
//        newAuthority("资产管理/计算资源/删除");
//        newAuthority("资产管理/计算资源/关联业务系统");
//        newAuthority("资产管理/计算资源/导出");
//        newAuthority("资产管理/计算资源/批量导入");
//        newAuthority("资产管理/办公资源");
//        newAuthority("资产管理/办公资源/添加");
//        newAuthority("资产管理/办公资源/查询");
//        newAuthority("资产管理/办公资源/修改");
//        newAuthority("资产管理/办公资源/删除");
//        newAuthority("资产管理/办公资源/导出");
//        newAuthority("资产管理/办公资源/批量导入");
//        newAuthority("资产管理/待确认资产");
//        newAuthority("资产管理/待确认资产/查询");
//        newAuthority("资产管理/待确认资产/新增");
//        newAuthority("资产管理/待确认资产/合并");
//        newAuthority("资产管理/待确认资产/忽略");
//        newAuthority("资产管理/待确认资产/撤销");
//        newAuthority("资产管理/待确认资产");
//    }
//    private void alarm() {
//        newAuthority("告警事件");
//        newAuthority("告警事件/告警信息");
//        newAuthority("告警事件/告警信息/查询");
//        newAuthority("告警事件/告警信息/人工提报");
//        newAuthority("告警事件/告警信息/详情");
//        newAuthority("告警事件/告警信息/提报");
//        newAuthority("告警事件/告警信息/合并");
//        newAuthority("告警事件/告警信息/关闭");
//        newAuthority("告警事件/事件分析");
//        newAuthority("告警事件/事件分析/详情");
//        newAuthority("告警事件/事件分析/子任务详情");
//        newAuthority("告警事件/事件分析/子任务领取");
//        newAuthority("告警事件/事件分析/批量领取");
//        newAuthority("告警事件/事件分析/子任务处理");
//        newAuthority("告警事件/事件分析/子任务转交");
//        newAuthority("告警事件/事件分析/子任务提交");
//        newAuthority("告警事件/事件分析/子任务关闭");
//        newAuthority("告警事件/事件分析审核");
//        newAuthority("告警事件/事件分析审核/查询");
//        newAuthority("告警事件/事件分析审核/详情");
//        newAuthority("告警事件/事件分析审核/审核");
//        newAuthority("告警事件/事件判定");
//        newAuthority("告警事件/事件判定/查询");
//        newAuthority("告警事件/事件判定/详情");
//        newAuthority("告警事件/事件判定/判定");
//        newAuthority("告警事件/事件判定审核");
//        newAuthority("告警事件/事件判定审核/查询");
//        newAuthority("告警事件/事件判定审核/审核");
//        newAuthority("告警事件/事件处置提报");
//        newAuthority("告警事件/事件处置提报/查询");
//        newAuthority("告警事件/事件处置提报/详情");
//        newAuthority("告警事件/事件处置提报/提报");
//        newAuthority("告警事件/事件处置");
//        newAuthority("告警事件/事件处置/详情");
//        newAuthority("告警事件/事件处置/批量领取");
//        newAuthority("告警事件/事件处置/子任务处理");
//        newAuthority("告警事件/事件处置/子任务转交");
//        newAuthority("告警事件/事件处置/子任务提交");
//        newAuthority("告警事件/事件处置/子任务详情");
//        newAuthority("告警事件/事件处置/子任务关闭");
//        newAuthority("告警事件/事件处置/子任务领取");
//        newAuthority("告警事件/事件处置审核");
//        newAuthority("告警事件/事件处置审核/查询");
//        newAuthority("告警事件/事件处置审核/详情");
//        newAuthority("告警事件/事件处置审核/审核");
//        newAuthority("告警事件/事件抽检/详情");
//        newAuthority("告警事件/事件抽检/审核");
//        newAuthority("告警事件/事件抽检");
//        newAuthority("告警事件/事件卷宗");
//        newAuthority("告警事件/事件卷宗/事件详情");
//        newAuthority("告警事件/事件卷宗/查询");
//        newAuthority("告警事件/事件卷宗/查看");
//        newAuthority("告警事件/事件卷宗/归档");
//        newAuthority("告警事件/事件关闭");
//        newAuthority("告警事件/事件关闭/详情");
//        newAuthority("告警事件/事件关闭/关闭");
//        newAuthority("告警事件/事件关闭/查询");
//    }
//    private void vulnerability() {
//        newAuthority("漏洞");
//        newAuthority("漏洞/漏洞信息");
//        newAuthority("漏洞/漏洞信息/查询");
//        newAuthority("漏洞/漏洞信息/主动提报");
//        newAuthority("漏洞/漏洞信息/指派提报");
//        newAuthority("漏洞/漏洞信息/查看详情");
//        newAuthority("漏洞/漏洞忽略规则");
//        newAuthority("漏洞/漏洞忽略规则/查询");
//        newAuthority("漏洞/漏洞忽略规则/新增");
//        newAuthority("漏洞/漏洞忽略规则/编辑");
//        newAuthority("漏洞/漏洞忽略规则/查看");
//        newAuthority("漏洞/漏洞忽略规则/删除");
//        newAuthority("漏洞/漏洞忽略列表");
//        newAuthority("漏洞/漏洞忽略列表/查询");
//        newAuthority("漏洞/漏洞忽略列表/查看");
//        newAuthority("漏洞/漏洞忽略列表/已整改");
//        newAuthority("漏洞/无主漏洞");
//        newAuthority("漏洞/无主漏洞/查询");
//        newAuthority("漏洞/无主漏洞/查看详情");
//        newAuthority("漏洞/漏洞验证");
//        newAuthority("漏洞/漏洞验证/查询");
//        newAuthority("漏洞/漏洞验证/查看");
//        newAuthority("漏洞/漏洞验证/处理");
//        newAuthority("漏洞/漏洞验证/漏洞编辑");
//        newAuthority("漏洞/漏洞验证/提交");
//        newAuthority("漏洞/漏洞验证/转交");
//        newAuthority("漏洞/漏洞验证/领取");
//        newAuthority("漏洞/漏洞验证/指派");
//        newAuthority("漏洞/漏洞处置");
//        newAuthority("漏洞/漏洞处置/查询");
//        newAuthority("漏洞/漏洞处置/查看");
//        newAuthority("漏洞/漏洞处置/处理");
//        newAuthority("漏洞/漏洞处置/提交");
//        newAuthority("漏洞/漏洞处置/转交");
//        newAuthority("漏洞/漏洞处置/领取");
//        newAuthority("漏洞/漏洞处置/指派");
//        newAuthority("漏洞/漏洞复测");
//        newAuthority("漏洞/漏洞复测/查询");
//        newAuthority("漏洞/漏洞复测/查看");
//        newAuthority("漏洞/漏洞复测/处理");
//        newAuthority("漏洞/漏洞复测/转交");
//        newAuthority("漏洞/漏洞复测/提交");
//        newAuthority("漏洞/漏洞复测/指派");
//        newAuthority("漏洞/漏洞复测/领取");
//        newAuthority("漏洞/漏洞审核");
//        newAuthority("漏洞/漏洞审核/查询");
//        newAuthority("漏洞/漏洞审核/查看详情");
//        newAuthority("漏洞/漏洞审核/审核");
//        newAuthority("漏洞/漏洞卷宗");
//        newAuthority("漏洞/漏洞卷宗/查询");
//        newAuthority("漏洞/漏洞卷宗/待归档漏洞");
//        newAuthority("漏洞/漏洞卷宗/已归档漏洞");
//        newAuthority("漏洞/漏洞卷宗/查询");
//        newAuthority("漏洞/漏洞卷宗/查看");
//        newAuthority("漏洞/漏洞卷宗/归档");
//    }
//    private void operationScript() {
//        newAuthority("运营脚本");
//        newAuthority("运营脚本/资产导入模板管理");
//        newAuthority("运营脚本/资产导入模板管理/添加模板");
//        newAuthority("运营脚本/资产导入模板管理/下载模板");
//        newAuthority("运营脚本/资产导入模板管理/更新模板");
//        newAuthority("运营脚本/事件模板管理");
//        newAuthority("运营脚本/事件模板管理/查询");
//        newAuthority("运营脚本/事件模板管理/新建");
//        newAuthority("运营脚本/事件模板管理/编辑");
//        newAuthority("运营脚本/事件模板管理/删除");
//    }
//
//    private void parameter() {
//        newAuthority("参数配置");
//        newAuthority("参数配置/营运参数");
//        newAuthority("参数配置/营运参数/查询");
//        newAuthority("参数配置/营运参数/保存编辑");
//        newAuthority("参数配置/基础资源软件");
//        newAuthority("参数配置/基础资源软件/添加");
//        newAuthority("参数配置/基础资源软件/查询");
//        newAuthority("参数配置/基础资源软件/修改");
//        newAuthority("参数配置/基础资源软件/删除");
//        newAuthority("参数配置/服务协议");
//        newAuthority("参数配置/服务协议/添加");
//        newAuthority("参数配置/服务协议/查询");
//        newAuthority("参数配置/服务协议/修改");
//        newAuthority("参数配置/服务协议/删除");
//        newAuthority("参数配置/等保级别");
//        newAuthority("参数配置/等保级别/添加");
//        newAuthority("参数配置/等保级别/查询");
//        newAuthority("参数配置/等保级别/修改");
//        newAuthority("参数配置/等保级别/删除");
//        newAuthority("参数配置/告警合并规则");
//        newAuthority("参数配置/告警合并规则/新建");
//        newAuthority("参数配置/告警合并规则/查询");
//        newAuthority("参数配置/告警合并规则/编辑");
//        newAuthority("参数配置/漏洞合并规则");
//        newAuthority("参数配置/漏洞合并规则/新建");
//        newAuthority("参数配置/漏洞合并规则/查询");
//        newAuthority("参数配置/漏洞合并规则/编辑");
//        newAuthority("参数配置/漏洞扫描");
//        newAuthority("参数配置/漏洞扫描/AWVS漏扫查询");
//        newAuthority("参数配置/漏洞扫描/AWVS漏扫添加");
//        newAuthority("参数配置/漏洞扫描/PoC验证漏扫添加");
//        newAuthority("参数配置/漏洞扫描/PoC验证漏扫保存配置");
//        newAuthority("参数配置/漏洞扫描/PoC验证漏扫启动");
//        newAuthority("参数配置/漏洞扫描/PoC验证漏扫更新");
////        newAuthority("参数配置/漏洞扫描配置/awvs配置编辑");
////        newAuthority("参数配置/漏洞扫描配置/awvs启动");
////        newAuthority("参数配置/漏洞扫描配置/awvs停止");
////        newAuthority("参数配置/漏洞扫描配置/afrog配置编辑");
////        newAuthority("参数配置/漏洞扫描配置/afrog启动");
//    }
//
//    private void performance() {
//        newAuthority("绩效统计");
//        newAuthority("绩效统计/年度绩效");
//        newAuthority("绩效统计/年度绩效/查询");
//        newAuthority("绩效统计/月度绩效");
//        newAuthority("绩效统计/月度绩效/查询");
//    }
//
//    private void workflow() {
//        newAuthority("工作流");
//        newAuthority("工作流/新增");
//        newAuthority("工作流/搜索");
//        newAuthority("工作流/编辑");
//        newAuthority("工作流/删除");
//    }
//    private void report() {
//        newAuthority("报告中心");
//        newAuthority("报告中心/报告生成");
//        newAuthority("报告中心/报告生成/报告查询");
//        newAuthority("报告中心/报告生成/编辑报告");
//        newAuthority("报告中心/报告生成/报告生成");
//        newAuthority("报告中心/报告生成/下载报告");
//    }
//
//    private void newAuthority(String name) {
//        try {
//            Authority byName = authorityRepo.findByName(name);
//            if (byName != null) {
//                return;
//            }
//            var authority = new Authority();
//            authority.setName(name);
//            authority = authorityRepo.save(authority);
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//    }
//}
